無須更新到最新,怕錯誤
npm init
npm init -y (全預設值)
(1)新增資料夾
(2)
(3)製作 package.json
只是個說明檔,但專案模組被刪除時
利用 >npm install 會依照package.json抓回模組
方便用~~
npm install ip
npm install express
package-lock.json 可以看到裝了甚麼
npm install bootstrap@4  @版本
npm uninstall bootstrap  解除安裝
建立 app.js、app.js、app3.js
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev":"node app2.js",
    "setup":"node app3.js"
  },
只能用run
npm run dev
npm run setup
  "scripts": {
     "start": "node app.js", 
  },
start都可以用
npm start
npm run start
npm install ip
    var ip = require("ip");
    var result = ip.address();
    console.log(result);
node app.js
express : 建立Web服器最常見的套件
body-parser : 協助Exprs解析表單與JON資料
cors : 協助進行跨來源資源共用(COR)在HTTP回應的標區加入Access-Control-Allow-Origin聲明
mysql : 連線MySQL 資料庫伺服存取資料的套件
ejs : 可搭配Express,一套U畫面處理引擎
  "dependencies": {
    "express": "^4.17.1",
    "ip": "^1.1.5"
  }
版本:
1.2.3
2.1.1
Major.Function.buildNumber
新版本.新增功能.製作Number
^山、~波
較寬鬆(通常)
^1.2.3
1.5.6(v)
1.999999(v)
2.0(X)
較嚴謹
~1.2.3
1.2.4
1.2.5
1.2.9999
1.3(X)

請求方法:
GET
POST
HEAD
PUT
DELETE
TRACE
OPTIONS
CONNECT
    var http = require('HTTP'); //建立http物件
    var server = http.createServer(function (req, res) {
    //成功 //res.write搭配writeHead檔案類型
    res.writeHead(200, ('Content-Type': 'text/html'J);
    res.write('Node.js');
    res.end('Hello World');
    });
    server.listen(80);

1.選CND(重要***************在上方選)
npm install nodemon -g (-g全域安裝)
C:\XXX\Node.js\Lab0809npm>npm install nademon -g
nodemon app.js
    //使用express套件
    var express = require("express");
    var app = express();
    app.listen(3000);
    //1.使用3000
    app.get("/", function (req, res) {
        res.send("OK, Home page....");
    })
中介程式輔助:express.static
    // Pipeline, step 1
    var aMiddleWare = express.static("./public");
    app.use(   aMiddleWare   )
使用中介
    // Pipeline, step 2
    app.use("/member", member);
路由:Router
    var member = express.Router();
    member.get("/new", function (req, res) {
        res.send("Member New...")
    })
    member.get("/login", function (req, res) {
        res.send("Member Login")
    })
port號3000/中介使用/路由器
http://localhost:3000/member/new
http://localhost:3000/member/login


主程式、中介index.js:static require
    var express = require("express");
    var app = express();
    app.listen(3000);
    // Pipeline, step 1
    var aMiddleWare = express.static("./public");
    app.use(   aMiddleWare   )
    // Pipeline, step 2
    var member = require("./member.js");
    app.use("/member", member);
    // http://localhost:3000/member/new
    // http://localhost:3000/member/login
副程式member.js: Router
    var express = require("express");
    var member = express.Router();
    member.get("/new", function (req, res) {
        res.send("Member New... V2")
    })
    member.get("/login", function (req, res) {
        res.send("Member Login V2")
    })
    module.exports = member;
1.get 直接指定  (特定路徑) (較小) => 簡單路由
2.use 可以廣泛運用 (較大,抓中介:static、Router) =>模組化路由
    var r = express.Router()
    r.get('/login',function(req,res){})
    r.get('/new',function(req,res){})
    app.use('/member',r)
exit 關閉終端機
ctrl+C 關閉使用套件 or 重新輸入指令
常備藥
npm init -y
npm install express
nodemon index.js
var express = require("express");
var app = express();
app.listen(3000);